#ifndef FileSystemRights_h
#define FileSystemRights_h

namespace Riccsson
{
	namespace System
	{
		namespace IO
		{
			// Summary:
			//     Defines the access rights to use when creating access and audit rules.
			enum class FileSystemRights
			{
				// Summary:
				//     Specifies the right to read the contents of a directory.
				ListDirectory = 1,
				//
				// Summary:
				//     Specifies the right to open and copy a file or folder. This does not include
				//     the right to read file system attributes, extended file system attributes,
				//     or access and audit rules.
				ReadData = 1,
				//
				// Summary:
				//     Specifies the right to create a file.
				CreateFiles = 2,
				//
				// Summary:
				//     Specifies the right to open and write to a file or folder. This does not
				//     include the right to open and write file system attributes, extended file
				//     system attributes, or access and audit rules.
				WriteData = 2,
				//
				// Summary:
				//     Specifies the right to create a folder.
				CreateDirectories = 4,
				//
				// Summary:
				//     Specifies the right to append data to the end of a file.
				AppendData = 4,
				//
				// Summary:
				//     Specifies the right to open and copy extended file system attributes from
				//     a folder or file. For example, this value specifies the right to view author
				//     and content information. This does not include the right to read data, file
				//     system attributes, or access and audit rules.
				ReadExtendedAttributes = 8,
				//
				// Summary:
				//     Specifies the right to open and write extended file system attributes to
				//     a folder or file. This does not include the ability to write data, attributes,
				//     or access and audit rules.
				WriteExtendedAttributes = 16,
				//
				// Summary:
				//     Specifies the right to run an application file.
				ExecuteFile = 32,
				//
				// Summary:
				//     Specifies the right to list the contents of a folder and to run applications
				//     contained within that folder.
				Traverse = 32,
				//
				// Summary:
				//     Specifies the right to delete a folder and any files contained within that
				//     folder.
				DeleteSubdirectoriesAndFiles = 64,
				//
				// Summary:
				//     Specifies the right to open and copy file system attributes from a folder
				//     or file. For example, this value specifies the right to view the file creation
				//     or modified date. This does not include the right to read data, extended
				//     file system attributes, or access and audit rules.
				ReadAttributes = 128,
				//
				// Summary:
				//     Specifies the right to open and write file system attributes to a folder
				//     or file. This does not include the ability to write data, extended attributes,
				//     or access and audit rules.
				WriteAttributes = 256,
				//
				// Summary:
				//     Specifies the right to create folders and files, and to add or remove data
				//     from files. This right includes the System.Security.AccessControl.FileSystemRights.WriteData
				//     right, System.Security.AccessControl.FileSystemRights.AppendData right, System.Security.AccessControl.FileSystemRights.WriteExtendedAttributes
				//     right, and System.Security.AccessControl.FileSystemRights.WriteAttributes
				//     right.
				Write = 278,
				//
				// Summary:
				//     Specifies the right to delete a folder or file.
				Delete = 65536,
				//
				// Summary:
				//     Specifies the right to open and copy access and audit rules from a folder
				//     or file. This does not include the right to read data, file system attributes,
				//     and extended file system attributes.
				ReadPermissions = 131072,
				//
				// Summary:
				//     Specifies the right to open and copy folders or files as read-only. This
				//     right includes the System.Security.AccessControl.FileSystemRights.ReadData
				//     right, System.Security.AccessControl.FileSystemRights.ReadExtendedAttributes
				//     right, System.Security.AccessControl.FileSystemRights.ReadAttributes right,
				//     and System.Security.AccessControl.FileSystemRights.ReadPermissions right.
				Read = 131209,
				//
				// Summary:
				//     Specifies the right to open and copy folders or files as read-only, and to
				//     run application files. This right includes the System.Security.AccessControl.FileSystemRights.Read
				//     right and the System.Security.AccessControl.FileSystemRights.ExecuteFile
				//     right.
				ReadAndExecute = 131241,
				//
				// Summary:
				//     Specifies the right to read, write, list folder contents, delete folders
				//     and files, and run application files. This right includes the System.Security.AccessControl.FileSystemRights.ReadAndExecute
				//     right, the System.Security.AccessControl.FileSystemRights.Write right, and
				//     the System.Security.AccessControl.FileSystemRights.Delete right.
				Modify = 197055,
				//
				// Summary:
				//     Specifies the right to change the security and audit rules associated with
				//     a file or folder.
				ChangePermissions = 262144,
				//
				// Summary:
				//     Specifies the right to change the owner of a folder or file. Note that owners
				//     of a resource have full access to that resource.
				TakeOwnership = 524288,
				//
				// Summary:
				//     Specifies whether the application can wait for a file handle to synchronize
				//     with the completion of an I/O operation.
				Synchronize = 1048576,
				//
				// Summary:
				//     Specifies the right to exert full control over a folder or file, and to modify
				//     access control and audit rules. This value represents the right to do anything
				//     with a file and is the combination of all rights in this enumeration.
				FullControl = 2032127,
			};
		}
	}
}
#endif